{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Lasso Regression"
      ],
      "metadata": {}
    },
    {
      "cell_type": "markdown",
      "source": [
        "Lasso Regression (Least Absolute Shrinkage and Selection Operator) is a method that performs both variable selection and regularization in order to enhance the prediction accuracy and interpretability of the statistical model it produces."
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# fix_yahoo_finance is used to fetch data \n",
        "import fix_yahoo_finance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2014-01-01'\n",
        "end = '2018-08-27'\n",
        "\n",
        "# Read data \n",
        "dataset = yf.download(symbol,start,end)\n",
        "\n",
        "# View Columns\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 downloaded\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Adj Close</th>\n",
              "      <th>Volume</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2014-01-02</th>\n",
              "      <td>3.85</td>\n",
              "      <td>3.98</td>\n",
              "      <td>3.84</td>\n",
              "      <td>3.95</td>\n",
              "      <td>3.95</td>\n",
              "      <td>20548400</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-03</th>\n",
              "      <td>3.98</td>\n",
              "      <td>4.00</td>\n",
              "      <td>3.88</td>\n",
              "      <td>4.00</td>\n",
              "      <td>4.00</td>\n",
              "      <td>22887200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-06</th>\n",
              "      <td>4.01</td>\n",
              "      <td>4.18</td>\n",
              "      <td>3.99</td>\n",
              "      <td>4.13</td>\n",
              "      <td>4.13</td>\n",
              "      <td>42398300</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-07</th>\n",
              "      <td>4.19</td>\n",
              "      <td>4.25</td>\n",
              "      <td>4.11</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>42932100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-08</th>\n",
              "      <td>4.23</td>\n",
              "      <td>4.26</td>\n",
              "      <td>4.14</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>30678700</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "            Open  High   Low  Close  Adj Close    Volume\n",
              "Date                                                    \n",
              "2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400\n",
              "2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200\n",
              "2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300\n",
              "2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100\n",
              "2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset[['Open','High', 'Low']]\n",
        "Y = dataset['Adj Close']"
      ],
      "outputs": [],
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.linear_model import Lasso\n",
        "from sklearn.cross_validation import train_test_split\n",
        "\nX_train,X_test,y_train,y_test=train_test_split(X,Y, test_size=0.3, random_state=31)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stderr",
          "text": [
            "C:\\Users\\Tin Hang\\Anaconda3\\envs\\py35\\lib\\site-packages\\sklearn\\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
            "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
          ]
        }
      ],
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso = Lasso()\n",
        "lasso.fit(X_train,y_train)\n",
        "train_score=lasso.score(X_train,y_train)\n",
        "test_score=lasso.score(X_test,y_test)\n",
        "coeff_used = np.sum(lasso.coef_!=0)"
      ],
      "outputs": [],
      "execution_count": 5,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(\"training score:\", train_score)\n",
        "print(\"test score: \", test_score)\n",
        "print(\"number of features used: \", coeff_used)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "training score: 0.9974681612587162\n",
            "test score:  0.9975726361411653\n",
            "number of features used:  1\n"
          ]
        }
      ],
      "execution_count": 6,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso001 = Lasso(alpha=0.01, max_iter=10e5)\n",
        "lasso001.fit(X_train,y_train)\n",
        "\n",
        "train_score001=lasso001.score(X_train,y_train)\n",
        "test_score001=lasso001.score(X_test,y_test)\n",
        "coeff_used001 = np.sum(lasso001.coef_!=0)\n",
        "\n",
        "print(\"training score for alpha=0.01:\", train_score001) \n",
        "print(\"test score for alpha =0.01:\", test_score001)\n",
        "print(\"number of features used: for alpha = 0.01:\", coeff_used001)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "training score for alpha=0.01: 0.9993706133400125\n",
            "test score for alpha =0.01: 0.9991932689568274\n",
            "number of features used: for alpha = 0.01: 2\n"
          ]
        }
      ],
      "execution_count": 7,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso00001 = Lasso(alpha=0.0001, max_iter=10e5)\n",
        "lasso00001.fit(X_train,y_train)\n",
        "\n",
        "train_score00001=lasso00001.score(X_train,y_train)\n",
        "test_score00001=lasso00001.score(X_test,y_test)\n",
        "coeff_used00001 = np.sum(lasso00001.coef_!=0)\n",
        "\n",
        "print(\"training score for alpha=0.0001:\", train_score00001) \n",
        "print(\"test score for alpha =0.0001:\", test_score00001)\n",
        "print(\"number of features used: for alpha = 0.0001:\", coeff_used00001)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "training score for alpha=0.0001: 0.999552234705388\n",
            "test score for alpha =0.0001: 0.9995505453433388\n",
            "number of features used: for alpha = 0.0001: 3\n"
          ]
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "plt.subplot(1,2,1)\n",
        "plt.plot(lasso.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Lasso; $\\alpha = 1$',zorder=7) # alpha here is for transparency\n",
        "plt.plot(lasso001.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Lasso; $\\alpha = 0.01$') # alpha here is for transparency\n",
        "\n",
        "plt.xlabel('Coefficient Index',fontsize=16)\n",
        "plt.ylabel('Coefficient Magnitude',fontsize=16)\n",
        "plt.legend(fontsize=13,loc=4)\n",
        "\n",
        "plt.subplot(1,2,2)\n",
        "\n",
        "plt.plot(lasso.coef_,alpha=0.7,linestyle='none',marker='*',markersize=5,color='red',label=r'Lasso; $\\alpha = 1$',zorder=7) # alpha here is for transparency\n",
        "plt.plot(lasso001.coef_,alpha=0.5,linestyle='none',marker='d',markersize=6,color='blue',label=r'Lasso; $\\alpha = 0.01$') # alpha here is for transparency\n",
        "plt.plot(lasso00001.coef_,alpha=0.8,linestyle='none',marker='v',markersize=6,color='black',label=r'Lasso; $\\alpha = 0.00001$') # alpha here is for transparency\n",
        "\n",
        "plt.xlabel('Coefficient Index',fontsize=16)\n",
        "plt.ylabel('Coefficient Magnitude',fontsize=16)\n",
        "plt.legend(fontsize=13,loc=4)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": [
              "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\n"
            ],
            "text/plain": [
              "<Figure size 432x288 with 2 Axes>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Stock Lasso Regression"
      ],
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset[['Open','High', 'Low']]\n",
        "Y = dataset['Adj Close']"
      ],
      "outputs": [],
      "execution_count": 13,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.cross_validation import train_test_split\n",
        "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)\n",
        "\n",
        "lasso = Lasso()\n",
        "lasso = lasso.fit(X_train,Y_train)"
      ],
      "outputs": [],
      "execution_count": 15,
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "Y_pred = lasso.predict(X_test)"
      ],
      "outputs": [],
      "execution_count": 16,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(X_train.shape)\n",
        "print(Y_train.shape)\n",
        "print(X_test.shape)\n",
        "print(Y_test.shape)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(937, 3)\n",
            "(937,)\n",
            "(235, 3)\n",
            "(235,)\n"
          ]
        }
      ],
      "execution_count": 17,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso.score(X_train, Y_train)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 18,
          "data": {
            "text/plain": [
              "0.9973732506090865"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 18,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso.score(X_test, Y_test)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 19,
          "data": {
            "text/plain": [
              "0.9969392393078691"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 19,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso.coef_"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 21,
          "data": {
            "text/plain": [
              "array([0.        , 0.93948345, 0.        ])"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 21,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lasso.intercept_"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 22,
          "data": {
            "text/plain": [
              "0.286974264398304"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 22,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import r2_score\n",
        "\n",
        "y_pred_lasso = lasso.fit(X_train, Y_train).predict(X_test)\n",
        "r2_score_lasso = r2_score(Y_test, y_pred_lasso)\n",
        "\n",
        "print(lasso)\n",
        "print(\"r^2 on test data : %f\" % r2_score_lasso)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Lasso(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=1000,\n",
            "   normalize=False, positive=False, precompute=False, random_state=None,\n",
            "   selection='cyclic', tol=0.0001, warm_start=False)\n",
            "r^2 on test data : 0.996939\n"
          ]
        }
      ],
      "execution_count": 24,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "plt.plot(lasso.coef_, color='gold', linewidth=2,\n",
        "         label='Lasso coefficients')\n",
        "plt.legend(loc='best')\n",
        "plt.title(\"Lasso R^2: %f\" % (r2_score_lasso))\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": [
              "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VVWbm5t1l1120cWLF3/rZ7j//vv15z//+brnm2++uVZXV+uHH36oW2+9tVZXV6uqak1NjaqqXnHFFXrjjTeqquoBBxygn376qaqqvvHGG7r//vurquopp5yiEyZM0I6ODl2wYIFuueWWqqo6d+5cPfzww9eta/LkyTpjxox1P9+aNWu+tW3X+50HgHkaRo21wzImubUuhmU/ccMFv4WB+7rhnMNg2K+h5hqomAij3oX0Un85Y1h5eTnHH388y5Yto7W1dd33sr/73e8ydepUJk2axDHHHMOIESPYddddOf3002lra+Poo49m3LhxvPjii+y3334UFLhGh5MmTeKVV17h6KOPXreOTz75hOLiYnbddVcABg0aBMBrr73GlClTANh2223ZfPPN+fTTT/nXv/7F/Pnz1+0119XV8dlnn4X9nfEXX3yRCRMmkJ+fD8DQoUPXm97Q0MDrr7/Oscceu25cS0vLuuGjjz6alJQUxowZs+4vma723HNPrr32WsrLyznmmGPYaqutwsoWLivuJnl1NsPSCdBZBzlHwdBp60/PvxKa3oA1z0PF8bDZXJCNu1ow4raNnXsfT5kyhalTp3LkkUfy0ksvceWVVwLuMMThhx/OM888wx577MHzzz/PPvvswyuvvMLTTz/NySefzLRp09YV6g1R1W6/Gqg93ANaVbn99ts5+OCDN+pn6ml9a3V2dpKXl8d7773X7fTMzMxeM5544onsvvvuPP300xx88MHce++9HHDAARuVtzt2zN0kr+VToOV/kL4lFD8AXf8zSyqUPAJppdD0H6i62EvMWFdXV0dpqfurZu2JSXDHpHfccUcuuugiysrK+Pjjj/nyyy8pLCzkrLPO4owzzuDdd99l99135+WXX2bFihV0dHQwa9Ys9t133/XWse2221JRUcHbb78NQH19Pe3t7eyzzz7MnDkTgE8//ZSvvvqKbbbZhoMPPpg777yTtra2ddMaGxvD/pkOPPBA5syZQ01NDQArV65cb/qgQYMYPXo0jz32GOAK+Pvvv7/B18zNzaW+vn7d88WLF7PFFltw3nnnceSRRzJ//vyw84XD9txNcqq9H+ruBcmC0schNa/7+dIKoPQx+HIfWPV7GLAnDJrQv1ljyJo1axgxYsS651OnTuXKK6/k2GOPpbS0lD322IMvvvgCgFtvvZW5c+eSmprKmDFj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\n"
            ],
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 27,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "mimetype": "text/x-python",
      "version": "3.5.5",
      "file_extension": ".py",
      "nbconvert_exporter": "python",
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "name": "python",
      "pygments_lexer": "ipython3"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "nteract": {
      "version": "0.12.2"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}